package com.fanshuai.graph;

import com.fanshuai.tree.Visitor;
import com.fanshuai.tree.tree.Tree;

public interface IGraph {
    /**
     * 添加节点
     * @param value
     */
    void addNode(int value) throws Exception;

    /**
     * 添加边
     * @param start
     * @param end
     */
    void addEdge(int start, int end) throws Exception;

    /**
     * 深度优先搜索  递归实现
     * @param visitor
     */
    void dfsReverse(Visitor visitor);

    /**
     * 深度优先搜索  非递归实现
     * @param visitor
     */
    void dfsNonReverse(Visitor visitor);

    /**
     * 广度优先搜索
     * @param visitor
     */
    void bfs(Visitor visitor);
}
